iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0

來了各位,最複雜的單元來了


1. Position

Vector3

Vector在Roblox Studio中代表了一項向量,譬如一個箭頭指的方向,而Vector3就是透過三個位置來表達這個向量的一項數值,這項向量的起始點在**xyz(0, 0, 0)**的位置,而例如我們要表達一個物件的位置在Vector3(1, 2, 3)的位置,意思就等同於這個物件的x距離原點1、y距離原點2、z距離原點3 (這個單位是Roblox中一個1*1*1的Part的大小,簡稱1 stud)

而在3D的世界中,x代表了此物件的左右向量、y代表了此物件的上下向量、z代表了此物件的前後向量(如果你玩過minecraft你應該不會不知道啦)

Vector3的使用方法,最簡單的方式就是直接使用new這項函式來定義一個新的Vector3數值,例如我想改變一個物件的位置

local Part = script.Parent
Part.Position = Vector3.new(1, 2, 3) --我們把這個物件的位置移動到了相對原點1, 2, 3距離的位置

CFrame

CFrame的概念與Vector3相同,不過他比Vector3多了一個面朝位置,簡單來說,使用Vector3的時候你只能夠在函式裡面定義三個數字但在CFrame中你可以放入兩項Vector3的數值,分別是位置以及面朝位置,當然,我們也是可以透過改變旋轉角度來改變他所面對的位置,但在不考慮更改旋轉角度的情況下這會是一個非常好用的方法。

CFrame的使用方法,也是一樣可以使用new這個函式來定義,例如我們可以直接定義一個物件的CFrame (對,他也是一個屬性)

local Part = script.Parent
Part.CFrame = CFrame.new(Vector3.new(1, 1, 4), Vector3.new(5, 1, 4)) --我們將這個物件的位置改變為Vector3(1, 1, 4),並讓他面對Vector3(5, 1, 4)

這麼臭的位置有存在的必要嗎? (惱)


出個題目考考大家,以下這張圖
https://ithelp.ithome.com.tw/upload/images/20250821/20169664LFM7K1rB1p.png

紅色Part的位置為Vector3(0, 0, 0)地上的材質每一個都是1 stud,請問:
(1) 使用Vector3表達時,綠色Part的位置為何?
(2) 使用CFrame表達時,藍色Part的位置為何?


今天先講Position,明後天會繼續把Rotation跟Size講完 (先講不是因為我懶,是因為這個章節如果一次放太多真的會很難吸收,但這章節又是很重要的章節所以必須分開講,另外我目前正在準備apcs,搞得頭非常昏)


上一篇
Day 9: Enum的用法與玩家攝影機的各項設定
下一篇
Day 11: Vector3與CFrame (2)
系列文
透過Roblox Studio學習Lua語言與基本程式邏輯21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言